home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Windows Expert
/
Windows Expert.iso
/
windownt
/
sossnt.zip
/
SOSSNT
/
SRC
/
PATCHES.TXT
< prev
next >
Wrap
Text File
|
1993-02-27
|
7KB
|
211 lines
This is a log of patches made to SOS by Rich Braun Jan-Apr 1991:
- NFSLOOKUP went into an infinite loop whenever it encountered a
subdirectory file (fixed in files.c).
Client command: ls
- Attempts to create a file with a long name caused SOS to crash
(fixed in files.c).
Client command: cat >longfile.name
- STATFS returned incorrect block counts. (fixed in files.c)
Client command: df -v
- Didn't support blocks larger than 500 bytes. (fixed in nfs.h)
Client command: mount -f NFS,rsize=512,wsize=512
- SETATTR did not have support for setting the size of a file; symptom
was that rewriting a file to a shorted length left old junk
at the end. (fixed in nfs.c, files.c)
Client command: cp shortfile longfile
- intopn() did a malloc for the path name, wasting processor time. Moved
it to the caller's stack frame. Also optimized out calls to
strcat (fixed in nfs.c, inodes.c, inodes.h)
- LINK didn't return an error code readable by the client. (fixed in nfs.c)
Client command: ln old new
- RENAME didn't return the correct error code. (fixed in nfs.c)
Client command: mv old new
- MKDIR didn't return a name-too-long error if a long filename was used.
(fixed in nfs.c, files.h, files.c)
Client command: mkdir longfilename
- showexps() didn't close the exports file, and in fact doesn't need
to open it anyway. (fixed in exports.c)
- nfs.c used malloc instead of local stack variables in a number of
places. (fixed in nfs.c)
- READDIR on large directories blew up due to the use of a 'short'
variable where a 'long' was needed. (fixed in nfs.c, files.h,
files.c)
Client command: ls bigdir
- READDIR sometimes returned 0 files for a directory containing files;
problem was that 'maxbytes' was set from an unitialized
stack variable. (fixed in nfs.c)
Client command: ls
- SETATTR always set the file protection even if specified as -1. This
clobbered the read-only status. (fixed in nfs.c)
- SETATTR did not set the modification time properly. (fixed in files.c)
Client command: copy -m
- UNLINK wouldn't delete a file if it was set RDONLY. (fixed in files.c)
- READ didn't warn of a too-large request. (added fprintf in nfs.c)
- Mounting of a root directory didn't work. (fixed in mountd.c, exports.c,
inodes.c, files.c)
- Moved InodeTable into far memory and increased its size. (fixed in inodes.c)
- Corrected fsid logic. (fixed in inodes.c, files.c, mountd.c)
- Allow writes to read-only files; authentication is done at the client
side rather than the server. (fixed in files.c)
Client command: cp rdonlyfile newfile
- Rewrote intopn routine to use internal stack; freed up space in inode
table--now 34 bytes per entry; originally 42. (fixed in inodes.c)
- Eliminated lower-case requirement for the drive letter in EXPORT.US
(fixed in inodes.c, exports.c)
- Changed make files in PC/IP to squeeze the _TEXT code segment. This
must be done in order to fit SOS into small-model.
- READDIR now returns "." and "..". (fixed in inodes.c, files.c)
Client command: ls
- Contents of file handles now have correct parent pointer and are
validated for certain calls. This eliminates "can't read .."
error from pwd command.
Client commands: pwd, ls
- If a file or directory was created with any uppercase letters, two
separate inode entries would be created erroneously. (fixed
in nfs.c)
- The CREATE function didn't examine the caller's UID and GID, so
file_create() didn't have them. This caused incorrect file
ownership on the Novell server. (fixed in nfs.c)
3/15/90 additions:
- The READDIR function sent incorrect data if the number of
files in a directory filled close to 1 block. Some NFS clients
saw empty directories if they contained about 20 files.
(fixed in nfs.c)
- READDIR didn't return '.' and '..' if a directory was empty. (fixed
in files.c)
- RENAME didn't update the inode cache, creating "phantom" files.
(fixed in files.c, nfs.c, files.h)
- REMOVE failed if a file had been read recently; the "unlink" was
attempted before closing the file. (fixed in files.c)
- RMDIR returned incorrect error code if a directory was not empty, etc.
(fixed in nfs.c)
- Set the UID/GID identifiers to those of the caller, to get around some
protection problems.
4/8/90 additions:
- The timezone parameter was reversed from the Unix standard. TZ=EST5EDT
now works, rather than EST-5EDT. Also added check for TZ variable,
forcing it to be set. (fixed in dtime.c)
- The server could be crashed easily by specifying a long filename in a
NFSLOOKUP call. The routine pntoin should never be called prior
to calling validate_path. (fixed in nfs.c, files.c)
Client command: cat abcdefghijklmnopqrstuvwxyz
- Improved command line parser, using getopt calls. (fixed in netd.c)
- Improved main documentation file soss.1.
5/10/90 additions:
- The NFS_WRITE call stored the wrong modification date. (fixed in files.c)
- A full filesystem couldn't be mounted. (fixed in nfs.c, files.c)
- Increased buffer capacity from 512 bytes to 1024 bytes. Added -b
command line option to allow setting the blocksize. (fixed in rpc/clnt.h,
sock.c, netd.h, netd.c, nfs.c, nfs.h)
--------------------
The following features have been added:
- Advanced debugging macro support. (files debug.c, debug.h)
- Improved inode caching (routines ingetentry, inattrset, inattrget,
inremnode; files inodes.c, inodes.h, nfs.c, files.c)
- Improved performance from general code cleanup.
- Root directories may now be exported.
- The EXPORTS function of mountd was not supported. (files exports.c,
mountd.c, exports.h)
Client command: showmount -e
- Added partial support for Novell file access authentication. (Excepting
directory trustees.)
- Added -t command line option to allow silent truncation of long filenames.
(files netd.c, netd.h, files.c)
--------------------
The following outstanding issues are known:
- The server crashes as soon as about 7,500 nodes are created.
- The mv command does not work on directories; this would require
direct I/O to disk a la the Norton Utilities.
- Inodes are not recycled as files are deleted.
- Code is compiled small-model and is very close to the 64K limit.
- A filename beginning with dot is unsupported, and the 'rm' command
under AIX creates such files.
- Daylight savings time handling requires more support than that
provided in the Microsoft library's "tzset" function.
--------------------
Suggestions for improvements:
- The code could be made to run as a TSR.
- The code could be made to use extended memory.
- Cache file data blocks.
- Prevent remote user "root" from being unconditionally trusted.
- Improve the client list parser (allow numeric IP addresses).
- Let administrator set protections for three classes of files: directories,
read-only files, and writable files.
- Implement a full-blown authentication scheme (i.e. store UID/GID/mode of
all files).
- Add PC-NFS version 1 and/or version 2 user authentication.
- Upgrade to NFS protocol version 3.